package view.eventos;

import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;

import view.confirmaciones.EventoCreado;
import model.Evento;
import model.PersonalAdministrativo;
import model.comunication.IEvento;
import model.comunication.IPersonalAdministrativo;
import model.utils.Util;

import com.toedter.calendar.JDateChooser;

public class AsignarEventoPA {

	private JDialog dialogAsignacionEvento;
	private JTextArea txtDescripcion;
	private JTextField txtAsignado;
	private JDateChooser dateRealizacion;
	private JDateChooser dateCreacion;
	private JComboBox<String> comboAsignar;
	private IPersonalAdministrativo comunicationPersonalAdministrativo;
	private IEvento comunicationEvento;
	private Evento eventoSelected;
	private List<PersonalAdministrativo> personalAdministrativos;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					AsignarEventoPA window = new AsignarEventoPA();
					window.dialogAsignacionEvento.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 */
	public AsignarEventoPA() {
		comunicationPersonalAdministrativo = IPersonalAdministrativo.getInstance();
		comunicationEvento = IEvento.getInstance();
		initialize();
	}

	/**
	 * Create the application.
	 */
	public AsignarEventoPA(Evento evento) {
		comunicationPersonalAdministrativo = IPersonalAdministrativo.getInstance();
		comunicationEvento = IEvento.getInstance();
		this.eventoSelected = evento;
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		this.dialogAsignacionEvento = new JDialog();
		this.dialogAsignacionEvento.setIconImage(Toolkit.getDefaultToolkit().getImage(AsignarEventoPA.class.getResource("/Icon_/calendar_64.png")));
		this.dialogAsignacionEvento.setTitle("Asignacion Tarea");
		this.dialogAsignacionEvento.setBounds(100, 100, 450, 436);
		this.dialogAsignacionEvento.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
		this.dialogAsignacionEvento.getContentPane().setLayout(null);
		this.dialogAsignacionEvento.setModal(true);

		JLabel lblCambioDePersonal = new JLabel("Cambio de personal del evento");
		lblCambioDePersonal.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblCambioDePersonal.setBounds(10, 11, 270, 14);
		this.dialogAsignacionEvento.getContentPane().add(lblCambioDePersonal);

		JLabel lblFechaDeCreacion = new JLabel("Fecha de creacion:");
		lblFechaDeCreacion.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblFechaDeCreacion.setBounds(12, 41, 124, 14);
		this.dialogAsignacionEvento.getContentPane().add(lblFechaDeCreacion);

		JLabel lblFecha = new JLabel("Fecha de realizacion:");
		lblFecha.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblFecha.setBounds(12, 73, 124, 14);
		this.dialogAsignacionEvento.getContentPane().add(lblFecha);

		JRadioButton rdbtnPendiente = new JRadioButton("Pendiente");
		rdbtnPendiente.setFont(new Font("Tahoma", Font.BOLD, 11));
		rdbtnPendiente.setBounds(236, 105, 90, 23);
		this.dialogAsignacionEvento.getContentPane().add(rdbtnPendiente);

		JLabel lblDescripcion = new JLabel("Descripcion:");
		lblDescripcion.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblDescripcion.setBounds(10, 109, 97, 14);
		this.dialogAsignacionEvento.getContentPane().add(lblDescripcion);

		this.txtDescripcion = new JTextArea();
		this.txtDescripcion.setBounds(12, 135, 414, 114);
		this.txtDescripcion.setColumns(10);
		this.txtDescripcion.setLineWrap(true);
		this.txtDescripcion.setWrapStyleWord(true);

		JScrollPane scrollTextArea = new JScrollPane();
		scrollTextArea.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		scrollTextArea.setViewportView(this.txtDescripcion);
		scrollTextArea.setBounds(12, 135, 414, 114);
		this.dialogAsignacionEvento.getContentPane().add(scrollTextArea);
		
		
		JLabel lblEmpleadoAsignado = new JLabel("Empleado asignado:");
		lblEmpleadoAsignado.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblEmpleadoAsignado.setBounds(12, 265, 124, 14);
		this.dialogAsignacionEvento.getContentPane().add(lblEmpleadoAsignado);

		this.txtAsignado = new JTextField();
		this.txtAsignado.setBounds(146, 262, 278, 20);
		this.txtAsignado.setColumns(10);
		dialogAsignacionEvento.getContentPane().add(txtAsignado);

		JLabel lblSeleccionarEmpleado = new JLabel("Seleccionar empleado:");
		lblSeleccionarEmpleado.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblSeleccionarEmpleado.setBounds(12, 305, 136, 14);
		this.dialogAsignacionEvento.getContentPane().add(lblSeleccionarEmpleado);

		this.comboAsignar = new JComboBox<String>();
		this.comboAsignar.setBounds(146, 304, 278, 17);
		this.dialogAsignacionEvento.getContentPane().add(comboAsignar);

		JButton btnCancelar = new JButton("Cancelar");
		btnCancelar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				dialogAsignacionEvento.dispose();
			}
		});
		btnCancelar.setIcon(new ImageIcon(AsignarEventoPA.class.getResource("/Icon_/exit.png")));
		btnCancelar.setFont(new Font("Tahoma", Font.BOLD, 11));
		btnCancelar.setBounds(318, 354, 107, 30);
		this.dialogAsignacionEvento.getContentPane().add(btnCancelar);

		JButton btnGuardar = new JButton(" Guardar");
		btnGuardar.setIcon(new ImageIcon(AsignarEventoPA.class.getResource("/Icon_/save_16.png")));
		btnGuardar.setFont(new Font("Tahoma", Font.BOLD, 11));
		btnGuardar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				eventoSelected.setComentario(txtDescripcion.getText());
				// eventoSelected.setEstado(estado);
				// eventoSelected.setFechaCreacion(dateCreacion.getCalendar());
				// eventoSelected.setFechaEvento(dateRealizacion.getCalendar());
				PersonalAdministrativo personalAdministrativo = null;

				for (PersonalAdministrativo personalAdministrativo2 : personalAdministrativos) {
					if (Util.obtainName(personalAdministrativo2).equals(comboAsignar.getSelectedItem())) {
						personalAdministrativo = personalAdministrativo2;
						break;
					}
				}

				eventoSelected.setPersonalAdministrativo(personalAdministrativo);
				comunicationEvento.updateEvento(eventoSelected);

				EventoCreado eventoCreado = new EventoCreado();

				dialogAsignacionEvento.dispose();
			}
		});
		btnGuardar.setBounds(189, 354, 119, 30);
		this.dialogAsignacionEvento.getContentPane().add(btnGuardar);

		this.dateCreacion = new JDateChooser();
		this.dateCreacion.setBounds(144, 36, 182, 23);
		this.dialogAsignacionEvento.getContentPane().add(dateCreacion);

		this.dateRealizacion = new JDateChooser();
		this.dateRealizacion.setBounds(144, 70, 182, 23);
		this.dialogAsignacionEvento.getContentPane().add(dateRealizacion);

		JLabel label = new JLabel("");
		label.setIcon(new ImageIcon(AsignarEventoPA.class.getResource("/Icon_/calendar_64.png")));
		label.setFont(new Font("Tahoma", Font.BOLD, 11));
		label.setBounds(347, 23, 64, 81);
		this.dialogAsignacionEvento.getContentPane().add(label);

		loadData();

		this.dialogAsignacionEvento.setVisible(true);
	}

	private void loadData() {
		this.txtDescripcion.setText(this.eventoSelected.getComentario());
		this.txtDescripcion.setEditable(false);
		PersonalAdministrativo personalAdministrativo = this.eventoSelected.getPersonalAdministrativo();
		this.txtAsignado.setText(Util.obtainName(personalAdministrativo));
		this.txtAsignado.setEditable(false);
		this.dateCreacion.setCalendar(this.eventoSelected.getFechaCreacion());
		this.dateCreacion.getCalendarButton().setEnabled(false);
		// ((javax.swing.JTextField) this.dateCreacion.getDateEditor()).setEditable(false);
		this.dateRealizacion.setCalendar(this.eventoSelected.getFechaEvento());
		this.dateRealizacion.getCalendarButton().setEnabled(false);
		this.personalAdministrativos = this.comunicationPersonalAdministrativo.getAllPersonalAdministrativo();

		for (PersonalAdministrativo personalAdministrativo2 : personalAdministrativos) {
			this.comboAsignar.addItem(Util.obtainName(personalAdministrativo2));

		}
	}
}
